package com.pig4cloud.pigx.contract.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.pig4cloud.pigx.common.customize.utils.serializer.BigDecimalToPlainStringSerializer;
import com.pig4cloud.pigx.contract.annotation.SetScaleMainCurrency;
import com.pig4cloud.pigx.contract.annotation.SetScaleTokenCurrency;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * app当前订单VO类
 *
 * @date 2022/8/25 21:56
 */
@Data
@ApiModel("app当前订单VO类")
public class AppContractCurrentOrderVO implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 主键
	 */
	@ApiModelProperty(value = "主键")
	@JsonSerialize(using = ToStringSerializer.class)
	private String id;

	/**
	 * 币对名称
	 */
	@ApiModelProperty(value = "币对名称")
	private String symbolName;

	/**
	 * 类型（0市价单、1限价单、2强平单）
	 */
	@ApiModelProperty(value = "类型（0市价单、1限价单、2强平单）")
	private String type;

	/**
	 * 仓位模式（0逐仓、1全仓）
	 */
	@ApiModelProperty(value = "仓位模式（0逐仓、1全仓）")
	private String positionMode;

	/**
	 * 方向（0做多、1做空）
	 */
	@ApiModelProperty(value = "方向（0做多、1做空）")
	private String side;

	/**
	 * 操作类型（0开仓、1平仓）
	 */
	@ApiModelProperty(value = "操作类型（0开仓、1平仓）")
	private String operationType;

	/**
	 * 价格
	 */
	@ApiModelProperty(value = "委托价格")
	@JsonSerialize(using = BigDecimalToPlainStringSerializer.class)
	@SetScaleMainCurrency
	private BigDecimal price;

	/**
	 * 数量
	 */
	@ApiModelProperty(value = "委托数量")
	@JsonSerialize(using = BigDecimalToPlainStringSerializer.class)
	@SetScaleTokenCurrency
	private BigDecimal num;

	/**
	 * 数量(币本位)
	 */
	@ApiModelProperty(value = "委托数量(币本位)")
	@JsonSerialize(using = BigDecimalToPlainStringSerializer.class)
	@SetScaleTokenCurrency
	private BigDecimal currencyNum;

	/**
	 * 倍数
	 */
	@ApiModelProperty(value = "倍数")
	private Integer multiple;

	/**
	 * 已成交数量
	 */
	@ApiModelProperty(value = "已成交数量")
	@JsonSerialize(using = BigDecimalToPlainStringSerializer.class)
	@SetScaleTokenCurrency
	private BigDecimal dealNum;

	/**
	 * 已成交数量(币本位)
	 */
	@ApiModelProperty(value = "已成交数量(币本位)")
	@JsonSerialize(using = BigDecimalToPlainStringSerializer.class)
	@SetScaleTokenCurrency
	private BigDecimal currencyDealNum;

	/**
	 * 成交均价
	 */
	@ApiModelProperty(value = "成交均价")
	@JsonSerialize(using = BigDecimalToPlainStringSerializer.class)
	@SetScaleMainCurrency
	private BigDecimal dealAvg;

	/**
	 * 创建时间
	 */
	@ApiModelProperty(value = "创建时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private LocalDateTime createTime;

	/**
	 * 委托状态（0委托中、1部分成交、2部分已撤销、3完全成交、4已撤销、5已过期）
	 */
	@ApiModelProperty(value = "委托状态（0委托中、1部分成交、2部分已撤销、3完全成交、4已撤销、5已过期）")
	private String status;

	/**
	 * 主币名称
	 */
	@ApiModelProperty(value = "主币名称")
	private String mainCurName;

	/**
	 * 外币名称
	 */
	@ApiModelProperty(value = "外币名称")
	private String tokenCurName;

	/**
	 * 张数
	 */
	@JsonSerialize(using = BigDecimalToPlainStringSerializer.class)
	private BigDecimal sheet;
}
